import axios from 'axios'
import store from '@/store'
import router from '@/router'
import { Toast } from 'vant'
// 创建了一个新的axios对象，接口基地址对应的就是黑马头条的基地址
// 并且新对象的名字叫request
const request = axios.create({
  baseURL: 'http://geek.itheima.net'
})

// 请求拦截
request.interceptors.request.use(config => {
  // 因为很多地方都需要携带token，所以统一设置在请求拦截器
  // 判断有没有token
  if (store.state.user.tokenObj.token) {
    config.headers.Authorization = 'Bearer ' + store.state.user.tokenObj.token
  }
  return config
}, error => {
  return Promise.reject(error)
})

// 拦截拦截
request.interceptors.response.use(response => {
  // 数据剥离
  return response.data
}, async error => {
  const res = await axios({
    url: 'https://geek.itheima.net/v1_0/authorizations',
    method: 'put',
    headers: {
      Authorization: `Bearer ${store.state.user.tokenObj.refresh_token}`
    }
  })
  // console.log(res)
  if (error.response.status === 401) {
    try {
      store.commit('user/setToken', {
        token: res.data.data.token,
        refresh_token: store.state.user.tokenObj.refresh_token
      })
      return request(error.config)
    } catch {
      Toast('登录状态过期，请重新登录')
      router.push('/login')
    }
  } else {
    return Promise.reject(error)
  }
})

// 暴露出这个对象
export default request
